<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>条件渲染</h2>
      <!-- 通过v-if指令，后面添加变量或者表达式来判断元素是否显示 -->
      <p v-if="show">Vue is awesome!</p>
      <!-- <p>123</p> -->
      <!-- v-else后面没有东西 -->
      <!-- v-else必须和v-if是相邻的兄弟元素 -->
      <p v-else>Oh no 😢</p>

      <hr />

      <p v-if="value === 1">11111</p>
      <p v-else-if="value === 2">22222</p>
      <p v-else>33333</p>

      <hr />

      <h2>template的使用</h2>

      <!-- template是vue提供的标签，自带的组件 -->
      <!-- template相当于用于占位的空标签 -->
      <template v-if="show2">
        <p>Vue is awesome!</p>
        <p>Vue is niubi!</p>
      </template>

      <hr />

      <h2>v-show的使用</h2>
      <!-- v-show的语法和作用和v-if几乎相同，都是用来控制元素的显示和隐藏 -->
      <!-- v-if是控制元素的渲染和不渲染，v-show是通过css的display属性来控制元素的显示和隐藏 -->
      <!-- v-if具有更低的初始开销，v-show具有更低的切换开销 -->
      <!-- 如果频繁切换，使用v-show -->
      <!-- 如果初始状态是隐藏，并且切换频率不高，使用v-if -->
      <p v-show="show3">Vue is awesome!</p>

      <!-- v-show是不能和v-else以及v-else-if配合使用 -->
      <!-- v-show是不能用来template上的 -->
    </div>

    <script src="./lib/Vue3.js"></script>
    <script>
      const { createApp } = Vue;

      createApp({
        data() {
          return {
            show: false,
            value: 3,
            show2: true,
            show3: false,
          };
        },
      }).mount("#app");
    </script>
  </body>
</html>
